﻿using EvertonApp.AdminWeb.Models;
using EvertonApp.Transporte;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;
using System.Xml;
using System.Xml.Linq;

namespace EvertonApp.AdminWeb.Controllers
{
    public class ComercioController : Controller
    {
        //
        // GET: /Comercio/
        public ActionResult InicioComercio()
        {
            ComercioModel modeloComercio = (ComercioModel)Session["Comercios"];

            
            ApiProxy proxy = new ApiProxy();

            List<Comercio> comerciosAsociados = (List<Comercio>) proxy.ObtenerComercios();

            if (modeloComercio == null)
            {
                modeloComercio = new ComercioModel();
                modeloComercio.Comercios = new List<Comercio>();
            }

            modeloComercio.Comercios = comerciosAsociados;

            modeloComercio.Nombre = String.Empty;
            modeloComercio.Direccion = String.Empty;
            modeloComercio.Telefono = String.Empty;
            Session["Comercios"] = modeloComercio;

            return View(modeloComercio);
        }

        public ActionResult InsertarComercio(ComercioModel modeloComercio)
        {
            ComercioModel comerciosModel = (ComercioModel)Session["Comercios"];

            if (modeloComercio.Nombre != String.Empty)
            {
                Comercio comercio = new Comercio {
                    Nombre = modeloComercio.Nombre,
                    Direccion = modeloComercio.Direccion,
                    Telefono = modeloComercio.Telefono
                };
                comerciosModel.Comercios.Add(comercio);
            }
            modeloComercio.Nombre = String.Empty;
            modeloComercio.Direccion = String.Empty;
            modeloComercio.Telefono = String.Empty;
            Session["Comercios"] = comerciosModel;

            return View("InicioComercio", comerciosModel);
        }

        public ActionResult EliminarComercio(Guid IdComercio)
        {
            ComercioModel comerciosModel = (ComercioModel)Session["Comercios"];

            foreach (var item in comerciosModel.Comercios)
            {
                if (item.IdComercio == IdComercio)
                {
                    comerciosModel.Comercios.Remove(item);

                    string endPoint = String.Concat("http://localhost:2011/api/comercio/", IdComercio);
                    var client = new RestClient(endPoint, HttpVerb.DELETE);
                    var xml = client.MakeRequest();

                    break;
                }
            }

            comerciosModel.Nombre = String.Empty;
            comerciosModel.Direccion = String.Empty;
            comerciosModel.Telefono = String.Empty;
            Session["Comercios"] = comerciosModel;

            return View("InicioComercio", comerciosModel);
        }

        public ActionResult FiltroComercio(ComercioModel modeloComercio)
        {
            ComercioModel comerciosModel = (ComercioModel)Session["Comercios"];

            Comercio comercio = new Comercio
            {
                Nombre = modeloComercio.Nombre,
                Direccion = modeloComercio.Direccion,
                Telefono = modeloComercio.Telefono
            };

            var ser = new JavaScriptSerializer();
            var json = ser.Serialize(comercio);

            string endPoint = @"http://localhost:2011/api/comercio/";
            var client = new RestClient(endPoint, HttpVerb.GET, json);
            var xml = client.MakeRequest();

            return View();
        }

        public ActionResult _grillaComercios(ComercioModel modeloComercio)
        {
            return PartialView(modeloComercio);
        }

        public ActionResult EditComercio(Guid IdComercio, String Nombre, String Direccion, String Telefono)
        {
            ComercioModel modelo = new ComercioModel();
            modelo.Id = IdComercio;
            modelo.Nombre = Nombre;
            modelo.Direccion = Direccion;
            modelo.Telefono = Telefono;

            return PartialView(modelo);
        }

        public ActionResult _formularioComercio()
        {
            return PartialView();
        }  
    }
}
